# 多阶段构建：构建阶段
FROM maven:3.9.9-eclipse-temurin-21 AS builder

# 设置工作目录
WORKDIR /app

# 创建 Maven 配置目录
RUN mkdir -p /root/.m2

# 添加 Maven 镜像配置
RUN echo '<settings><mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror></mirrors></settings>' > /root/.m2/settings.xml

# 复制 Maven 包装器和配置
COPY .mvn/ .mvn
COPY mvnw pom.xml ./

# 给 mvnw 执行权限
RUN chmod +x ./mvnw

# 下载依赖（利用 Docker 层缓存）
RUN ./mvnw dependency:go-offline -B

# 复制源代码
COPY src ./src

# 构建应用程序
RUN ./mvnw clean package -DskipTests

# 多阶段构建：运行阶段
FROM maven:3.9.9-eclipse-temurin-21

# 设置工作目录
WORKDIR /app

# 从构建阶段复制 JAR 文件
COPY --from=builder /app/target/CourseHub-0.0.1-SNAPSHOT.jar app.jar

# 暴露应用程序端口
EXPOSE 8091

# 运行应用程序
ENTRYPOINT ["java", "-jar", "app.jar"]
